home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Czech Logic, Card & Gambling Games
/
Logické hry.iso
/
hry
/
Fish Fillets
/
script
/
corridor
/
code.lua
next >
Wrap
Text File
|
2005-07-16
|
14KB
|
423 lines
-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
initModels()
sound_playMusic("music/rybky02.ogg")
local pokus = getRestartCount()
local luminous = {
small, big,
leftpes, rightpes, vypinac,
dvere1, dvere2, dvere3, dvere4,
poklop1, poklop2
}
addHeadAnim(small, "images/fishes/small", "head_dark", "dark_00")
addHeadAnim(small, "images/fishes/small", "head_dark", "dark_01")
addHeadAnim(big, "images/fishes/big", "head_dark", "dark_00")
addHeadAnim(big, "images/fishes/big", "head_dark", "dark_01")
-- -------------------------------------------------------------
local function prog_init_room()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
room.oci = 0
room.bliknul = 0
room.last = random(2)
room.rpesmala = 0
room.rpesvelka = 0
room.nerusit = 0
room.pesmluvi = 0
room.dark = false
local darked = false
return function()
if room.dark then
for key, model in pairs({small, big}) do
if model:isAlive() then
local action = model:getAction()
if action == "turn" or action == "activate" or random(100) < 6 then
model_useSpecialAnim(model.index, "head_dark", 1)
else
model_useSpecialAnim(model.index, "head_dark", 0)
end
end
end
if not darked then
game_changeBg("images/"..codename.."/dark.png")
for key, model in pairs(getModelsTable()) do
if not isIn(model, luminous) then
model:setEffect("invisible")
end
end
darked = true
end
elseif darked then
game_changeBg("images/"..codename.."/chodba-p2.png")
for key, model in pairs(getModelsTable()) do
model:setEffect("none")
end
darked = false
end
if no_dialog() and isReady(small) and isReady(big) then
if room.dark and room.tma > 0 then
room.tma = room.tma - 1
end
if not room.dark then
room.tma = random(100) + 50
end
if room.bliknul == 1 then
room.bliknul = room.bliknul + 1
addm(random(10) + 10, "ch-m-rozsvit"..random(3))
addv(random(15) + 2, "ch-v-pockej"..random(3))
elseif room.bliknul == 3 then
room.bliknul = room.bliknul + 1
addm(random(10), "ch-m-blik"..random(2))
room.oci = room.bliknul + 2
elseif room.oci < room.bliknul and room.oci > 0 then
if random(100) < 40 then
room.oci = 0
addm(3, "ch-m-blik0")
else
room.oci = room.bliknul
end
elseif room.tma == 0 then
room.tma = random(300) + 100
if random(100) < 80 then
room.last = 1 - room.last
end
switch(room.last){
[0] = function()
addv(0, "ch-v-halo"..random(3))
addm(random(20), "ch-m-tady"..random(3))
end,
[1] = function()
addm(0, "ch-m-bojim"..random(3))
addv(random(20), "ch-v-neboj"..random(3))
end,
}
elseif room.rpesvelka == 0 and big.Y >= 20 and random(100) < 2 then
room.rpesvelka = 1
room.nerusit = 1
pom1 = random(4)
addv(10, "ch-v-robopes")
addm(random(5), "ch-m-ten")
addv(random(10), "ch-v-zapada")
addm(5 + random(10), "ch-m-odpoved"..pom1)
if random(100) < 70 then
addv(random(20) + 10, "ch-v-smysl")
if random(100) < 80 then
addm(random(10) + 5, "ch-m-vubec")
end
end
room.cpsa = random(2)
planDialogSet(random(20), "ch-r-nevsimej"..random(3), 10, room, "pesmluvi")
planDialogSet(random(20), "ch-r-hracka", 10, room, "pesmluvi")
planDialogSet(10 + random(20), "ch-r-ikdyz"..random(4), 10, room, "pesmluvi")
planDialogSet(10 + random(20), "ch-r-anavic"..pom1, 10, room, "pesmluvi")
planSet(room, "nerusit", 0)
elseif room.rpesmala == 0 and small.Y >= 28 and (small.X <= 11 or small.X >= 20) and random(100) < 3 then
if room.rpesvelka == 1 and random(3) < 2 then
addv(2, "ch-v-pozor")
else
addm(2, "ch-m-doufam")
end
room.rpesmala = 1
end
end
end
end
-- -------------------------------------------------------------
local function prog_init_rightpes()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
rightpes.faze = 0
return function()
if rightpes.faze == 2 then
rightpes.faze = 0
else
rightpes.faze = rightpes.faze + 1
end
if room.dark then
rightpes.afaze = rightpes.faze + 3
else
rightpes.afaze = rightpes.faze
if room.pesmluvi ~= 0 and room.cpsa == 1 and random(2) == 0 then
rightpes.afaze = rightpes.afaze + 6
end
end
rightpes:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_leftpes()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
leftpes.faze = 0
return function()
if leftpes.faze == 2 then
leftpes.faze = 0
else
leftpes.faze = leftpes.faze + 1
end
if room.dark then
leftpes.afaze = leftpes.faze + 3
else
leftpes.afaze = leftpes.faze
if room.pesmluvi ~= 0 and room.cpsa == 0 and random(2) == 0 then
leftpes.afaze = leftpes.afaze + 6
end
end
leftpes:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_vypinac()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
vypinac.stav = 0
local afterLoad = true
return function()
if afterLoad then
afterLoad = false
return
end
switch(vypinac.stav){
[0] = function()
if (vypinac.dir == dir_left or vypinac.dir == dir_right) and level_isNewRound() then
vypinac.stav = vypinac.stav + 1
vypinac.afaze = 1
vypinac:talk("ch-x-click1")
end
end,
[1] = function()
vypinac.stav = vypinac.stav + 1
vypinac.afaze = 2
room.dark = true
room.bliknul = room.bliknul + 1
if room.nerusit == 0 then
game_killPlan()
end
end,
[2] = function()
if (vypinac.dir == dir_left or vypinac.dir == dir_right) and level_isNewRound() then
vypinac.stav = 0
vypinac.afaze = 0
room.dark = false
vypinac:talk("ch-x-click2")
room.bliknul = room.bliknul + 1
if room.nerusit == 0 then
game_killPlan()
end
end
end,
}
vypinac:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_dvere1()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dvere1.faze = 0
dvere1.pocit = 2
return function()
if dvere1.pocit > 0 then
dvere1.pocit = dvere1.pocit - 1
else
dvere1.pocit = 5
dvere1.faze = 1 - dvere1.faze
end
if room.dark then
dvere1.afaze = dvere1.faze + 2
else
dvere1.afaze = dvere1.faze
end
dvere1:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_dvere2()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dvere2.faze = 0
dvere2.pocit = 1
return function()
if dvere2.pocit > 0 then
dvere2.pocit = dvere2.pocit - 1
else
dvere2.pocit = 1
dvere2.faze = 1 - dvere2.faze
end
if room.dark then
dvere2.afaze = dvere2.faze + 2
else
dvere2.afaze = dvere2.faze
end
dvere2:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_dvere3()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dvere3.faze = 0
dvere3.pocit = 2
return function()
if dvere3.pocit > 0 then
dvere3.pocit = dvere3.pocit - 1
else
dvere3.pocit = 4
dvere3.faze = 1 - dvere3.faze
end
if room.dark then
dvere3.afaze = dvere3.faze + 2
else
dvere3.afaze = dvere3.faze
end
dvere3:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_dvere4()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
dvere4.faze = 0
dvere4.pocit = 1
return function()
if dvere4.pocit > 0 then
dvere4.pocit = dvere4.pocit - 1
else
dvere4.pocit = 2
dvere4.faze = 1 - dvere4.faze
end
if room.dark then
dvere4.afaze = dvere4.faze + 2
else
dvere4.afaze = dvere4.faze
end
dvere4:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_poklop2()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
poklop2.faze = 1
poklop2.pocit = 1
return function()
if poklop2.pocit > 0 then
poklop2.pocit = poklop2.pocit - 1
else
poklop2.pocit = 3
poklop2.faze = 1 - poklop2.faze
end
if room.dark then
poklop2.afaze = poklop2.faze + 2
else
poklop2.afaze = poklop2.faze
end
poklop2:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_poklop1()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
poklop1.faze = 0
poklop1.pocit = 1
return function()
if poklop1.pocit > 0 then
poklop1.pocit = poklop1.pocit - 1
else
poklop1.pocit = 3
poklop1.faze = 1 - poklop1.faze
end
if room.dark then
poklop1.afaze = poklop1.faze + 2
else
poklop1.afaze = poklop1.faze
end
poklop1:updateAnim()
end
end
-- --------------------
local update_table = {}
local subinit
subinit = prog_init_room()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_rightpes()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_leftpes()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_vypinac()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dvere1()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dvere2()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dvere3()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_dvere4()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_poklop2()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_poklop1()
if subinit then
table.insert(update_table, subinit)
end
return update_table
end
local update_table = prog_init()
-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
for key, subupdate in pairs(update_table) do
subupdate()
end
end